phe<-read.csv('GSE25066_sample.csv',quote='',header=T,row.names=1,check.names=F)
data<-read.csv('GSE25066_expr_all.csv',quote='',header=T,row.names=1,check.names=F)
phe$Risk<-ifelse(phe$level==1,'High','Low')
phe<-phe[,c(1,26,27)]
data<-as.data.frame(t(data))
data$sample<-rownames(data)
data<-merge(phe,data,by='sample')
rownames(data)<-data$sample
phe<-data[,1:3]
data<-data[,-1:-3]
data<-as.data.frame(t(data))
drug<-read.csv('drug_list.txt',quote='',header=F)
drug<-as.data.frame(t(drug))
drug$V1<-substring(drug$V1,2,)
library(pRRophetic)
result<-apply(drug , 1 , function(a){
tmp<-pRRopheticPredict(as.matrix(data),drug=as.character(a),selection=1,printOutput=FALSE,minNumSamples=1,tissueType='breast',removeLowVaryingGenes=0.01)
return(tmp)
})

result<-as.data.frame(result)
names(result)<-drug$V1
result$sample<-rownames(result)
phe<-merge(phe,result,by='sample')
rownames(phe)<-phe$sample
phe<-phe[,-1]
high<-which(phe$Risk=='High')
low<-which(phe$Risk=='Low')
de_result<-apply(phe[,-1:-2] , 2 , function(event){
wt_p<-wilcox.test(event[high],event[low])$p.value
high_mean=mean(event[high])
low_mean=mean(event[low])
fc=high_mean/low_mean
tmp<-cbind(p=wt_p,fc)
return(tmp[1,])
})

de_result<-as.data.frame(t(de_result))
cor<-cor(phe$rs,phe[,-1:-2],method='spearman')
library(psych)
p<-corr.test(phe$rs,phe[,-1:-2],method='spearman',adjust = "none", use = "complete")
p<-p$p.adj
p<-as.data.frame(t(p))
cor<-as.data.frame(t(cor))
de_result$cor<-cor$V1
de_result$cor.p<-p$V1
write.csv(de_result,'drug_result.csv',quote=F)
de_result<-de_result[de_result$cor.p<0.05,]
de_result<-phe[,names(phe)%in%rownames(de_result)]
de_result$Risk<-phe$Risk
library(reshape2)
de_result<-melt(de_result,id.vars='Risk')
library(ggsignif)
library(ggforce)
library(ggpubr)
cor$drug<-rownames(cor)
names(cor)[1]<-'cor'
cor<-cor[cor$drug%in%de_result$variable,]
cor1<-cor[cor$cor>0,]
cor2<-cor[cor$cor<0,]

pdf('plot1.pdf',width=4,height=6)
ggdotchart(cor1, x = 'drug', y = "cor",
           color = "#00AFBB",                       
           add = "segments",add.params = list(color = '#00AFBB'),                     
           ggtheme = theme_pubr())+labs(x='')+coord_flip()+theme(axis.text.x = element_text(angle = 0))
dev.off()

cor2$cor1<-abs(cor2$cor)
pdf('plot2.pdf',width=4,height=6)
ggdotchart(cor2, x = 'drug', y = "cor1",
           color = "#00AFBB",                       
           add = "segments",add.params = list(color = '#00AFBB'),                     
           ggtheme = theme_pubr())+labs(x='')+coord_flip()+theme(axis.text.x = element_text(angle = 0))
dev.off()

de_result1<-de_result[de_result$variable%in%cor1$drug,]
pdf('drug1.pdf',width=8,height=6)
ggboxplot(de_result1, x="variable", y="value",outlier.shape = NA,
          fill = "Risk",xlab = "Drugs", ylab = "log(IC50)") +
    stat_compare_means(aes(group= Risk),label = "p.signif",label.y = 6.5,
                       symnum.args = list(cutpoints = c(0, 0.0001, 0.001, 0.01, 0.05, 1), 
                                          symbols = c("****", "***", "**", "*", " "))) +
    scale_fill_manual(values = c('red','blue')) +
    theme_classic()+
    theme(axis.text.x = element_text(angle = 45, hjust = 1))
dev.off()
de_result2<-de_result[de_result$variable%in%cor2$drug,]
pdf('drug2.pdf',width=12,height=6)
ggboxplot(de_result2, x="variable", y="value",outlier.shape = NA,
          fill = "Risk",xlab = "Drugs", ylab = "log(IC50)") +
    stat_compare_means(aes(group= Risk),label = "p.signif",label.y = 9.5,
                       symnum.args = list(cutpoints = c(0, 0.0001, 0.001, 0.01, 0.05, 1), 
                                          symbols = c("****", "***", "**", "*", " "))) +
    scale_fill_manual(values = c('red','blue')) +
    theme_classic()+
    theme(axis.text.x = element_text(angle = 45, hjust = 1))
dev.off()

data<-scale(data)
write.table(data,'data_z.txt',quote=F,sep='\t')
tide<-read.csv('TIDE.csv',header=T,row.names=1,check.names=F)
tide<-tide[,2:3]
tide$sample<-rownames(tide)
tide<-tide[,-1]
phe$sample<-rownames(phe)
phe<-phe[,c(2,141)]
tide<-merge(tide,phe,by='sample')
rownames(tide)<-tide$sample
tide<-tide[,-1]
Risk <- list(c("High", "Low"))
pdf('tide.pdf',width=5,height=5)
ggboxplot(tide, x = "Risk", y = "TIDE",fill = 'Risk', palette = c('red','blue'))+stat_compare_means(comparisons=Risk,label = "p.signif")+labs(x='',y='TIDE')
dev.off()
